<?php
/**
 * Rds
 *
 * @category Jdcloud
 * @package  DragonJd\Rds
 * @author   Jdcloud <jdcloud-api@jd.com>
 * @license  Apache-2.0 http://www.apache.org/licenses/LICENSE-2.0
 * @link     https://www.jdcloud.com/help/faq
 */

namespace DragonJd\Rds;

use DragonJd\JdCloudClient;
use DragonJd\Api\Service;
use DragonJd\Api\DocModel;
use DragonJd\Api\ApiProvider;
use DragonJd\PresignUrlMiddleware;

/**
 * Client used to interact with rds.
 *
 * @method \DragonJd\Result describeAccounts(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAccountsAsync(array $args = [])
 * @method \DragonJd\Result createAccount(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAccountAsync(array $args = [])
 * @method \DragonJd\Result describeAccountPrivilege(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAccountPrivilegeAsync(array $args = [])
 * @method \DragonJd\Result deleteAccount(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAccountAsync(array $args = [])
 * @method \DragonJd\Result grantPrivilege(array $args = [])
 * @method \GuzzleHttp\Promise\Promise grantPrivilegeAsync(array $args = [])
 * @method \DragonJd\Result revokePrivilege(array $args = [])
 * @method \GuzzleHttp\Promise\Promise revokePrivilegeAsync(array $args = [])
 * @method \DragonJd\Result resetPassword(array $args = [])
 * @method \GuzzleHttp\Promise\Promise resetPasswordAsync(array $args = [])
 * @method \DragonJd\Result createSuperAccount(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSuperAccountAsync(array $args = [])
 * @method \DragonJd\Result grantAccountPrivilege(array $args = [])
 * @method \GuzzleHttp\Promise\Promise grantAccountPrivilegeAsync(array $args = [])
 * @method \DragonJd\Result describeAccountsForOps(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAccountsForOpsAsync(array $args = [])
 * @method \DragonJd\Result createAccountForOps(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAccountForOpsAsync(array $args = [])
 * @method \DragonJd\Result modifyAccountForOps(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyAccountForOpsAsync(array $args = [])
 * @method \DragonJd\Result describeAudit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAuditAsync(array $args = [])
 * @method \DragonJd\Result createAudit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAuditAsync(array $args = [])
 * @method \DragonJd\Result deleteAudit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAuditAsync(array $args = [])
 * @method \DragonJd\Result describeAuditOptions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAuditOptionsAsync(array $args = [])
 * @method \DragonJd\Result modifyAudit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyAuditAsync(array $args = [])
 * @method \DragonJd\Result describeAuditFiles(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAuditFilesAsync(array $args = [])
 * @method \DragonJd\Result describeAuditDownloadURL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAuditDownloadURLAsync(array $args = [])
 * @method \DragonJd\Result enableAudit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableAuditAsync(array $args = [])
 * @method \DragonJd\Result disableAudit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableAuditAsync(array $args = [])
 * @method \DragonJd\Result describeAuditResult(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAuditResultAsync(array $args = [])
 * @method \DragonJd\Result describeAzs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAzsAsync(array $args = [])
 * @method \DragonJd\Result describeBackups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBackupsAsync(array $args = [])
 * @method \DragonJd\Result createBackup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createBackupAsync(array $args = [])
 * @method \DragonJd\Result deleteBackup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteBackupAsync(array $args = [])
 * @method \DragonJd\Result describeBackupDownloadURL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBackupDownloadURLAsync(array $args = [])
 * @method \DragonJd\Result describeBackupSynchronicities(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBackupSynchronicitiesAsync(array $args = [])
 * @method \DragonJd\Result createBackupSynchronicity(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createBackupSynchronicityAsync(array $args = [])
 * @method \DragonJd\Result deleteBackupSynchronicity(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteBackupSynchronicityAsync(array $args = [])
 * @method \DragonJd\Result createInstanceByTimeInCrossRegion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createInstanceByTimeInCrossRegionAsync(array $args = [])
 * @method \DragonJd\Result describeBinlogs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBinlogsAsync(array $args = [])
 * @method \DragonJd\Result describeBinlogDownloadURL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBinlogDownloadURLAsync(array $args = [])
 * @method \DragonJd\Result clearBinlogs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise clearBinlogsAsync(array $args = [])
 * @method \DragonJd\Result alterTableWithOnlineDDL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise alterTableWithOnlineDDLAsync(array $args = [])
 * @method \DragonJd\Result describePrivilege(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describePrivilegeAsync(array $args = [])
 * @method \DragonJd\Result describeDatabases(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDatabasesAsync(array $args = [])
 * @method \DragonJd\Result createDatabase(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createDatabaseAsync(array $args = [])
 * @method \DragonJd\Result deleteDatabase(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteDatabaseAsync(array $args = [])
 * @method \DragonJd\Result restoreDatabaseFromBackup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restoreDatabaseFromBackupAsync(array $args = [])
 * @method \DragonJd\Result restoreDatabaseFromFile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restoreDatabaseFromFileAsync(array $args = [])
 * @method \DragonJd\Result restoreDatabaseFromOSS(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restoreDatabaseFromOSSAsync(array $args = [])
 * @method \DragonJd\Result modifyDatabaseComment(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyDatabaseCommentAsync(array $args = [])
 * @method \DragonJd\Result describeErrorLogs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeErrorLogsAsync(array $args = [])
 * @method \DragonJd\Result describeImportFiles(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeImportFilesAsync(array $args = [])
 * @method \DragonJd\Result getUploadKey(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getUploadKeyAsync(array $args = [])
 * @method \DragonJd\Result setImportFileShared(array $args = [])
 * @method \GuzzleHttp\Promise\Promise setImportFileSharedAsync(array $args = [])
 * @method \DragonJd\Result deleteImportFile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteImportFileAsync(array $args = [])
 * @method \DragonJd\Result describeInstances(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstancesAsync(array $args = [])
 * @method \DragonJd\Result createInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createInstanceAsync(array $args = [])
 * @method \DragonJd\Result describeInstanceAttributes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstanceAttributesAsync(array $args = [])
 * @method \DragonJd\Result deleteInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteInstanceAsync(array $args = [])
 * @method \DragonJd\Result describeBackupPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBackupPolicyAsync(array $args = [])
 * @method \DragonJd\Result modifyBackupPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyBackupPolicyAsync(array $args = [])
 * @method \DragonJd\Result enableEnhancedBackup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableEnhancedBackupAsync(array $args = [])
 * @method \DragonJd\Result describeBackupSpace(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBackupSpaceAsync(array $args = [])
 * @method \DragonJd\Result describeBackupCharge(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBackupChargeAsync(array $args = [])
 * @method \DragonJd\Result modifyInstanceName(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyInstanceNameAsync(array $args = [])
 * @method \DragonJd\Result failoverInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise failoverInstanceAsync(array $args = [])
 * @method \DragonJd\Result rebootInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise rebootInstanceAsync(array $args = [])
 * @method \DragonJd\Result enableInternetAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableInternetAccessAsync(array $args = [])
 * @method \DragonJd\Result disableInternetAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableInternetAccessAsync(array $args = [])
 * @method \DragonJd\Result restoreInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restoreInstanceAsync(array $args = [])
 * @method \DragonJd\Result createInstanceFromBackup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createInstanceFromBackupAsync(array $args = [])
 * @method \DragonJd\Result modifyInstanceSpec(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyInstanceSpecAsync(array $args = [])
 * @method \DragonJd\Result createInstanceByTime(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createInstanceByTimeAsync(array $args = [])
 * @method \DragonJd\Result createROInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createROInstanceAsync(array $args = [])
 * @method \DragonJd\Result modifyConnectionMode(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyConnectionModeAsync(array $args = [])
 * @method \DragonJd\Result describeLatestRestoreTime(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeLatestRestoreTimeAsync(array $args = [])
 * @method \DragonJd\Result modifyParameterGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyParameterGroupAsync(array $args = [])
 * @method \DragonJd\Result exchangeInstanceDns(array $args = [])
 * @method \GuzzleHttp\Promise\Promise exchangeInstanceDnsAsync(array $args = [])
 * @method \DragonJd\Result modifyInstanceAz(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyInstanceAzAsync(array $args = [])
 * @method \DragonJd\Result describeSSL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSSLAsync(array $args = [])
 * @method \DragonJd\Result enableSSL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableSSLAsync(array $args = [])
 * @method \DragonJd\Result disableSSL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableSSLAsync(array $args = [])
 * @method \DragonJd\Result restoreInstanceByTime(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restoreInstanceByTimeAsync(array $args = [])
 * @method \DragonJd\Result modifyActiveDirectory(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyActiveDirectoryAsync(array $args = [])
 * @method \DragonJd\Result modifyInstanceMaintainTime(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyInstanceMaintainTimeAsync(array $args = [])
 * @method \DragonJd\Result describeInstanceMaintainTime(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstanceMaintainTimeAsync(array $args = [])
 * @method \DragonJd\Result switchForModifyingInstanceSpec(array $args = [])
 * @method \GuzzleHttp\Promise\Promise switchForModifyingInstanceSpecAsync(array $args = [])
 * @method \DragonJd\Result describeUpgradeVersions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeUpgradeVersionsAsync(array $args = [])
 * @method \DragonJd\Result describeUpgradePlan(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeUpgradePlanAsync(array $args = [])
 * @method \DragonJd\Result upgradeEngineVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise upgradeEngineVersionAsync(array $args = [])
 * @method \DragonJd\Result enableIntercept(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableInterceptAsync(array $args = [])
 * @method \DragonJd\Result disableIntercept(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableInterceptAsync(array $args = [])
 * @method \DragonJd\Result describeInterceptResult(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInterceptResultAsync(array $args = [])
 * @method \DragonJd\Result describeIntercept(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInterceptAsync(array $args = [])
 * @method \DragonJd\Result describeLogs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeLogsAsync(array $args = [])
 * @method \DragonJd\Result updateLogDownloadURLInternal(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateLogDownloadURLInternalAsync(array $args = [])
 * @method \DragonJd\Result describeLogDownloadURL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeLogDownloadURLAsync(array $args = [])
 * @method \DragonJd\Result describeParameters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeParametersAsync(array $args = [])
 * @method \DragonJd\Result modifyParameters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyParametersAsync(array $args = [])
 * @method \DragonJd\Result deleteParameterGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteParameterGroupAsync(array $args = [])
 * @method \DragonJd\Result modifyParameterGroupAttribute(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyParameterGroupAttributeAsync(array $args = [])
 * @method \DragonJd\Result describeParameterGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeParameterGroupsAsync(array $args = [])
 * @method \DragonJd\Result createParameterGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createParameterGroupAsync(array $args = [])
 * @method \DragonJd\Result describeParameterGroupParameters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeParameterGroupParametersAsync(array $args = [])
 * @method \DragonJd\Result modifyParameterGroupParameters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyParameterGroupParametersAsync(array $args = [])
 * @method \DragonJd\Result describeParameterModifyRecords(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeParameterModifyRecordsAsync(array $args = [])
 * @method \DragonJd\Result copyParameterGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise copyParameterGroupAsync(array $args = [])
 * @method \DragonJd\Result describeParameterGroupAttachedInstances(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeParameterGroupAttachedInstancesAsync(array $args = [])
 * @method \DragonJd\Result describeIndexPerformance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeIndexPerformanceAsync(array $args = [])
 * @method \DragonJd\Result describeQueryPerformance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeQueryPerformanceAsync(array $args = [])
 * @method \DragonJd\Result describeSlowLogAttributes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSlowLogAttributesAsync(array $args = [])
 * @method \DragonJd\Result describeSlowLogs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSlowLogsAsync(array $args = [])
 * @method \DragonJd\Result describeActiveQueryPerformance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeActiveQueryPerformanceAsync(array $args = [])
 * @method \DragonJd\Result describeErrorLog(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeErrorLogAsync(array $args = [])
 * @method \DragonJd\Result describeReadWriteProxies(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeReadWriteProxiesAsync(array $args = [])
 * @method \DragonJd\Result createReadWriteProxy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createReadWriteProxyAsync(array $args = [])
 * @method \DragonJd\Result describeReadWriteProxyAttribute(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeReadWriteProxyAttributeAsync(array $args = [])
 * @method \DragonJd\Result deleteReadWriteProxy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteReadWriteProxyAsync(array $args = [])
 * @method \DragonJd\Result enableReadWriteProxyInternetAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableReadWriteProxyInternetAccessAsync(array $args = [])
 * @method \DragonJd\Result disableReadWriteProxyInternetAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableReadWriteProxyInternetAccessAsync(array $args = [])
 * @method \DragonJd\Result modifyReadWriteProxy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyReadWriteProxyAsync(array $args = [])
 * @method \DragonJd\Result describeTables(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTablesAsync(array $args = [])
 * @method \DragonJd\Result describeTde(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTdeAsync(array $args = [])
 * @method \DragonJd\Result enableTde(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableTdeAsync(array $args = [])
 * @method \DragonJd\Result describeWhiteList(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeWhiteListAsync(array $args = [])
 * @method \DragonJd\Result modifyWhiteList(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyWhiteListAsync(array $args = [])
 */
class RdsClient extends JdCloudClient
{
    public function __construct(array $args)
    {
        $args['with_resolved'] = function (array $args) {
            $this->getHandlerList()->appendInit(
                PresignUrlMiddleware::wrap(
                    $this,
                    $args['endpoint_provider'],
                    [
                        'operations' => [
                        ],
                        'service' => 'rds',
                        'presign_param' => 'PresignedUrl',
                    ]
                ),
                'rds'
            );
        };

        parent::__construct($args);
    }
}